int1 = -0x260
print(int1, type(int1))

float1 = 32.2e-18; float2=70.2130E12; float3=3.14e5; float4=0.0; float5=5.; float6=.3
print(float1, type(float1))
print(float2, type(float2))
print(float3, type(float3))
print(float4, type(float4))
print(float5, type(float5))
print(float6, type(float6))

# 实部虚部都是浮点数
complex1 = 45.j; complex2 = -.545+0j; complex3=3e-26-7j 
print(complex1, type(complex1))
print(complex2, type(complex2))
print(complex3, type(complex3))

'''
-608 <class 'int'>

3.22e-17 <class 'float'>
70213000000000.0 <class 'float'>
314000.0 <class 'float'>
0.0 <class 'float'>
5.0 <class 'float'>
0.3 <class 'float'>

45j <class 'complex'>
(-0.545+0j) <class 'complex'>
(3e-26-7j) <class 'complex'>
'''

import math
print(math.pi, math.e)
# 3.141592653589793 2.718281828459045

import random
print('random()', random.random())
# 随机生成下一个实数，它在[0,1)范围内
# 0.19512763086516394

# []
print('random.randint(0, 2)', random.randint(0, 2))

# 随机抽n个字符凑一个序列
print('random.sample(\'wengchongyu\', 4)', random.sample('wengchongyu', 4)) # ['c', 'e', 'w', 'n']
print('\'\'.join(random.sample(\'wengchongyu\', 4))', ''.join(random.sample('wengchongyu', 4))) # ogey


print(random.choice(range(10)))
# range: 数字序列
# random.choice: 随机挑选一个
# 8

# 1-100 选一个奇数(步长2)
print('random.randrange(1, 100, 2)', random.randrange(1, 100, 2))

# shuffle 随机排序

# 交互模式中,_表示最近一次的输出
#   原则上是只读变量
#   如果手动赋值，那么每次访问_都会变成赋的值
#       直到del_,就好起来了
#       就是用户自定义了_,当这个引用被清理，则将读取系统的_

# 奇进偶弃：因为浮点数的表示在计算机中并不准确
# 现象: 取靠近的偶数
'''
>>> round(10.5) 
10
>>> round(11.5) 
12
'''
# fractions 模块提供了 Fraction, 支持使用 int, numbers.Rational 类型构造分数

# decimal 模块提供了 Decimal 做更高精度的运算

# 四舍五入的问题不进在小数上，除法也会有
'''
>>> 10/3
3.3333333333333335

>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17
'''

# 数字转序列
source = '1234'
aNum = int(source)
print(aNum, type(aNum))
# 1234 <class 'int'>

aNum = list(source)
print(aNum, type(aNum))
# ['1', '2', '3', '4'] <class 'list'>

aNum = 5; aNum += 6
print(aNum) # 11
aNum = 5; aNum =+ 6 # aNum = +6
print(aNum) # 6